In a typical multimedia computer system, a conventional personal computer is augmented with a full-motion video card to display full-motion video images in a window on its display screen. The video information may be generated by any source. Still images, such as text, may be concurrently displayed outside the video window. Such a system offers enormous potential for educational applications and other interactive applications.
FIG. 1 illustrates a conventional multimedia circuit within a personal computer. The original full-motion video data may be in the form of a standard analog video signal such as in a National Television System Committee (NTSC) format or other format. Assuming the original video data is analog, this analog signal is then converted to a digital signal using an A/D converter 10. This digitized signal is then applied to an input of a full-motion video card 12 (which may or may not include the A/D converter 10). Such a video card 12 includes a full-motion video memory buffer 14.
The video card 12 is connected to a system bus 16. Also connected to bus 16 is a conventional VGA controller and frame buffer card 20. The VGA card outputs digital RGB graphics data (including clock data) to the video card 12 via a feature connector 21. The digital full-motion video data contained in the video memory buffer 14 is multiplexed with the digital graphics data. This multiplexed digital data is then converted to RGB analog signals and applied to a monitor via cables 23. The monitor then displays a full-motion video window along with graphics data outside the window.
If the video card 12 were not installed, the VGA card 20 would be connected to drive the monitor by RGB analog signals directly outputted on leads 25. A conventional D/A converter in VGA card 20 converts the digital output of the VGA frame buffer to analog RGB signals on leads 25.
The personal computer's CPU 22 is connected to the system RAM 24, and the CPU 22 is connected to bus 16 for controlling, among other things, the operation of the video card 12 and VGA card 20.
FIG. 2 illustrates in more detail the video card 12 and its interaction with the VGA card 20 and monitor 30. Repeated elements from FIG. 1 are identified with identical numerals. The display monitor 30 may display on the order of 800.times.600 pixels or more. The frame buffer in the VGA card 20 and the video memory buffer 14 contain storage locations which are typically bit-mapped to the display screen so that the storage locations have a one-to-one correspondence with the pixels in the display monitor 30. Therefore, proper timing of the video and graphics signals is critical to obtain the desired display of video and graphics data.
An input port 32 on the motion video card 12 receives analog or digital motion video information from a VCR, laser disk, CD ROM, television, or any other video source. This information is then converted into the proper digital format and applied to a vertical and horizontal scaler 34. The vertical and horizontal scaler 34 is controlled by signals on a control line to reduce (if desired) the pixel size (width.times.height) of the incoming video image so that the motion video image can be displayed in a small window 36 on the display monitor 30. The original video image (e.g., 640.times.480 pixels) may be scaled down by dropping lines of pixels to reduce the vertical height and by dropping pixels along a horizontal line to reduce the horizontal width of the video image. Such scaling also reduces the required size of the motion video memory buffer 14 and its peak bandwidth demands.
This scaled video data is then buffered by a first-in/first-out (FIFO) buffer 37. FIFO buffer 37 is also used to synchronize the video data with the memory buffer 14 clock. The data outputted by FIFO buffer 37 is then stored in the memory buffer 14, which may be a VRAM or DRAM, in a bit-mapped arrangement.
The digital data from the VGA card 20 and the digital full-motion video data from the memory buffer 14 are then multiplexed by a digital multiplexer 38, which is controlled to pass the full-motion video data to the display monitor 30 at the proper time.
A horizontal and vertical expander may be used at the output of the memory buffer 14 to increase the pixel size of the video image. Additionally, a FIFO buffer may be inserted between the memory buffer 14 and the multiplexer 38.
The resulting multiplexed data stream outputted from multiplexer 38 is converted to RGB analog signals by the D/A converter 40 and then applied to the display monitor 30 to display a full-motion video window 36 along with graphics data. If we assume that the incoming video pixel size was scaled down by half in each dimension, to 320.times.240 pixels, a full-motion video window 36 of 320.times.240 pixels will be displayed by the display monitor 30.
At appropriate times during the raster scanning of the display screen, the multiplexer 38 is controlled by a signal on control line 44 to output either the digital graphics data or the video data to the display monitor 30 for display. The multiplexer 38 should be timely controlled so that the full-motion video image is aligned within the rectangular window 36 on the display screen. The position and size of the window 36 is chosen by the user with the aid of a mouse or keyboard. The Window.TM. program by Microsoft provides such a multimedia feature. The application program may, instead, automatically select the size and position of the window 36. The program typically automatically controls the scaler 34 and memory controller for the video memory buffer 14 so that the size and location of the video data stored in buffer 14 corresponds with the position and size of window 36.
The control of multiplexer 38 to properly position video window 36 on the display screen is typically accomplished as follows.
Using the Windows.TM. program, the size and location of the full-motion video window 36 may be programmed by the user using a selected color key. The digital RGB signals corresponding to the selected color key are then stored in the VGA frame buffer (in VGA card 20) as a rectangular block which is bit-mapped to the display pixels corresponding to window 36 in FIG. 2. The selected color key value is also applied to an input 45 of a digital comparator 46 along with the digital output of the VGA card 20. When the digital RGB signal outputted from the VGA card 20 matches the previously selected color key, the comparator 46 switches multiplexer 38 to pass the full-motion video data to the D/A converter 40. The timing of the video memory buffer 14 must be synchronized with the VGA frame buffer, otherwise the video data intended to be displayed within window 36 will not be aligned within the window 36.
Other methods exists to control the overlay of a motion video window 36 on a display screen. However, using a color key is one of the simplest and most popular methods.
It is also known to control multiplexer 38 by detecting when a chroma key value outputted by video memory buffer 14 matches a pre-selected chroma key value. When this chroma key value is detected in the video stream, multiplexer 38 is then controlled to pass the graphics data from the VGA card 20 to the D/A converter 40. This operation is called a chroma key overlay. For example, the color blue may be selected as the chroma key value so that the blue color in the original video picture will be replaced with the graphics data outputted by the VGA card 20. In the personal computer arena, however, the graphics data is usually in the background, and the video window 36 will be the overlay.
Since the personal computer graphics data is provided to the video card in a digital form, the video overlay process is conducted in the digital domain. However, in today's personal computer technology, the video overlay system and method described with respect to FIG. 2 posts several limitations.
Typically, the motion video card 12 is provided separately from the VGA card 20, and these cards are provided by a variety of manufacturers. The transmission of digital graphics data to the motion video card 12 is by means of a feature connector 21, which has a speed limitation of only about 30 MHz. Today's computer graphics displays can accept analog signals from a VGA card (via RGB leads 25 in FIG. 1) at about 135 MHz. Thus, resolution and color quality is reduced by limiting the bandwidth of the graphics data from 135 MHz to 30 MHz in order to operate the VGA card 20 in conjunction with the motion video card 12. Because of this speed limitation of the feature connector 21, most video add-on products are designed to perform only up to about 45 MHz.
Interfacing with the feature connector 21 also creates severe graphics compatibility problems. The digital graphics data to be transferred over the feature connector 21 can be in an 8-bit, 15-bit, 16-bit, or 24-bit format, depending on the color quality provided by the VGA card. The setup and hold times of the pixel clock are different due to the VGA card being manufactured by different manufacturers. In order to reduce compatibility problems due to the variable data formats and clock parameters, the motion video card 12 has to re-buffer or re-generate the clock and data signals provided by the VGA card 20. This increases the cost and complexity of the motion video card 12.
What is needed is a new system and technique for an improved video overlay system which allows the highest quality images to be displayed on a monitor with little or no increase in cost and which reduces the compatibility problems between today's VGA cards and motion video cards. This improved system should also overcome previous problems with misalignment between the video data and the intended video overlay window on a display screen.